package models

type Transaction struct {
	Id               uint64 `json:"id"                xorm:"notnull pk autoincr BigInt comment('id')"`
	TransactionIndex string `json:"transaction_index"  xorm:"notnull Varchar(255) comment('交易索引')"`
	Hash             string `json:"tx_hash"              xorm:"notnull index Varchar(255) comment('交易hash')"`
	BlockNumber      string `json:"block_number"       xorm:"notnull Varchar(255) comment('区块编号')"`
	BlockHash        string `json:"block_hash"         xorm:"notnull Varchar(255) comment('区块hash')"`
	From             string `json:"from"              xorm:"notnull Varchar(255) comment('链名称')"`
	Recipient        string `json:"to"                xorm:"Varchar(255) comment('接收地址')"`
	Amount           string `json:"value"             xorm:"notnull Varchar(255) comment('金额')"`
	AccountNonce     string `json:"nonce"             xorm:"notnull Varchar(255) comment('随机数')"`
	Price            string `json:"gas_price"          xorm:"notnull Varchar(255) comment('gas价格')"`
	GasLimit         string `json:"gas"               xorm:"notnull Varchar(255) comment('gas限额')"`
	Payload          string `json:"input"             xorm:"notnull Text comment('携带数据')"`
	V                string `json:"v"                 xorm:"notnull Varchar(255) comment('签名v')"`
	R                string `json:"r"                 xorm:"notnull Varchar(255) comment('签名r')"`
	S                string `json:"s"                 xorm:"notnull Varchar(255) comment('签名s')"`
	Status           int    `json:"status"            xorm:"notnull Int comment('交易验证状态')"`
	Time             string `json:"timestamp"        xorm:"notnull Varchar(255) - comment('时间戳')"`
}

type TransactionList []Transaction

func (list TransactionList) HashArr() []string {
	result := make([]string, 0, len(list))
	for _, v := range list {
		result = append(result, v.Hash)
	}
	return result
}

type TransactionIndex struct {
	Id          uint64 `json:"id"               xorm:"notnull pk autoincr BigInt comment('id')"`      //交易id
	Hash        string `json:"tx_hash"          xorm:"notnull index  Varchar(255) comment('交易hash')"` //交易hash
	BlockNumber string `json:"block_number"      xorm:"notnull  Varchar(255) comment('区块编号')"`        //区块编号
	//Status      int    `json:"status"           xorm:"notnull Int comment('交易验证状态')"`                 //交易验证状态
	From      string `json:"from"             xorm:"notnull index Varchar(255) comment('发送地址')"` //发送地址
	Recipient string `json:"to"               xorm:"Varchar(255) comment('接收地址')"`               //接收地址
	Time      string `json:"timestamp"        xorm:"notnull Varchar(255) comment('时间戳')"`        //时间戳
	Method    string `json:"method"        xorm:"notnull Varchar(50) comment('调用方法')"`           //调用方法，通过合约产生的为具体方法，非合约产生的为transfer
}
